# 带着二哈去旅行丶:ZZQ
# 生成时间：2021/12/4 下午4:59

# 15.4 使用Plotly模拟掷骰子.3.3
# 绘制随机漫步图
"""
import matplotlib.pyplot as plt         # 导入绘图模块
from RandomWalk import RandomWalk       # 调用RandomWalk中的类

# 创建一个RandomWalk实例
rw = RandomWalk()
rw.fill_walk()
# 将所有点都绘制出来
plt.style.use('Solarize_Light2')            # 图表样式
fig,ax = plt.subplots()             # fig图 ax表示各个图表
ax.scatter(rw.x_values,rw.y_values,s=15.4 使用Plotly模拟掷骰子)    # scatter散点图形式输出
plt.show()
"""

# 15.4 使用Plotly模拟掷骰子.3.4
# 模拟多次随机漫步
'''
import matplotlib.pyplot as plt  # 导入绘图模块
from RandomWalk import RandomWalk  # 调用RandomWalk中的类

# 创建一个RandomWalk实例
# 只要程序处于活动状态，就不断地模拟随机漫步数
while True:
    rw = RandomWalk()
    rw.fill_walk()
    # 将所有点都绘制出来
    plt.style.use('Solarize_Light2')             # 图表样式
    fig, ax = plt.subplots()                     # fig图 ax表示各个图表
    ax.scatter(rw.x_values, rw.y_values, s=15.4 使用Plotly模拟掷骰子)   # scatter散点图形式输出
    plt.show()

    keep_running = input('Make another_walk?(y/n):')    # 控制结束
    if keep_running == 'n':                 
        break
'''

# 15.4 使用Plotly模拟掷骰子.3.5
# 设置随机漫步图的样式
import matplotlib.pyplot as plt  # 导入绘图模块
from RandomWalk import RandomWalk  # 调用RandomWalk中的类

# 创建一个RandomWalk实例
# 只要程序处于活动状态，就不断地模拟随机漫步数

# 1.给点着色
'''
while True:
    rw = RandomWalk()
    rw.fill_walk()
    # 将所有点都绘制出来
    plt.style.use('Solarize_Light2')             # 图表样式
    fig, ax = plt.subplots()                     # fig图 ax表示各个图表

    point_numbers = range(rw.num_points)        # 生产一个数字列表使用它来设置漫步点的颜色
    ax.scatter(rw.x_values,rw.y_values,c=point_numbers, cmap=plt.cm.Blues, edgecolors='none', s=15.4 使用Plotly模拟掷骰子)
    # c表示由point_numbers值反应的颜色映射   cmap用什么颜色映射   edgecolor删除每个点周围的轮廓  最后生产渐变色

    plt.show()

    keep_running = input('Make another_walk?(y/n):')    # 控制结束
    if keep_running == 'n':
        break
'''
while True:
# 4.增加点数
    rw = RandomWalk(50000)
    rw.fill_walk()
    # 将所有点都绘制出来
    plt.style.use('Solarize_Light2')             # 图表样式
# 5.调整尺寸适应屏幕
    fig, ax = plt.subplots(figsize=(10,6), dpi=128)
    # fig图 ax表示各个图表 figsize以指定生产图形的尺寸（英寸） 需要指定一个元组 dpi传递当前系统的分辨率

    point_numbers = range(rw.num_points)        # 生产一个数字列表使用它来设置漫步点的颜色
    ax.scatter(rw.x_values,rw.y_values,c=point_numbers, cmap=plt.cm.Blues, edgecolors='none', s=1)
    # c表示由point_numbers值反应的颜色映射   cmap用什么颜色映射   edgecolor删除每个点周围的轮廓  最后生产渐变色点图

# 2.突出起点和终点
    ax.scatter(0, 0, c='green', edgecolors='none', s=100)
    ax.scatter(rw.x_values[-1], rw.y_values[-1], c='red', edgecolors='none', s=100)
# 3.隐藏坐标轴
    ax.get_xaxis().set_visible(False)
    ax.get_yaxis().set_visible(False)

    plt.show()

    keep_running = input('Make another_walk?(y/n):')    # 控制结束
    if keep_running == 'n':
        break
